package com.le.medium.class7;

import org.junit.Test;

/**
 * 最长递增子序列
 * 思路：
 * 以每一个位置结尾求解最大递增子序列
 */
public class Problem07_longestAddSubSequence {

    public static int getLength(int[] nums) {
        if (nums == null || nums.length == 0) {
            return 0;
        }
        // dp[i] 以i结尾的最大递增子序列长度
        int[] dp = new int[nums.length];
        dp[0] = 1;
        int max = 1;
        for (int i = 1; i < nums.length; i++) {
            int temp = 0;
            // 可以优化为二分查找
            for (int j = 0; j < i; j++) {
                if (nums[j] < nums[i]) {
                    temp = Math.max(temp, dp[j]);
                }
            }
            dp[i] = temp + 1;
            max = Math.max(max, dp[i]);
        }

        return max;
    }

    @Test
    public void test() {
        int[] arr = {1, 2, 3, 6, 4, 5};
        System.out.println(getLength(arr));
    }
}
